Recursive query for communications network data

ABSTRACT

An approach for providing telephony services over a data network is disclosed. A communications system includes a location server that receives a request from a calling station to establish a call with a station associated with a called party. The location server generates a message specifying a set of addresses relating to the called party and context information. A proxy server communicates with the location server and is configured to receive the message and to attempt to establish the call based on the set of addresses. The proxy server iteratively queries the location server to obtain another set of addresses if no prior address results in establishment of the call.

RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No. 10/099,097 filed on Mar. 15, 2002 (Attorney Docket RIC01017), and claims the benefit of the earlier filing date under 35 U.S.C. § 119(e) of, U.S. Provisional Patent Application (Attorney Docket RIC-01-021), filed Mar. 20, 2001, entitled “IP Communications,” U.S. Provisional Patent Application (Attorney Docket RIC-01-022), Mar. 20, 2001, entitled “IP Communications,” U.S. Provisional Patent Application (Attorney Docket RIC-01-023), filed Mar. 20, 2001, entitled “IP Communications,” and U.S. Provisional Patent Application (Attorney Docket RIC-01-024), filed Mar. 20, 2001, entitled “IP Communications”; the entireties of which are incorporated herein by reference.

FIELD OF THE INVENTION

The present invention relates to a communications system, and is more particularly related to providing voice communication services over a data network.

BACKGROUND OF THE INVENTION

A new era in telecommunications, driven by deregulation, new sources of competition, substantial growth of the Internet, and the growth and importance of data in customers' enterprise, is promoting the move to converged networks. Vendors and standards bodies are enabling this migration with solutions that address the challenges of transition. The primary incentive to customers to adopt a converged solution, however, is the promise of new and expanded capabilities in addition to maintaining existing calling capabilities (e.g., Centrex type features). One challenge is the implementation of call features, which require, at times, complex call routing processes, over a data network in which the upstream and downstream communication paths may traverse different network elements.

The popularity and convenience of the Internet has resulted in the reinvention of traditional telephony services. These services are offered over a packet switched network with minimal or no cost to the users. IP (Internet Protocol) telephony, thus, have found significant success, particularly in the long distance market. In general, IP telephony, which is also referred to as Voice-over-IP (VoIP), is the conversion of voice information into data packets that are transmitted over an IP network. Users also have turned to IP telephony as a matter of convenience in that both voice and data services are accessible through a single piece of equipment, namely a personal computer. Furthermore, traditional DTMF (Dual-Tone Multi-Frequency) phones can enjoy the benefits of VoIP technology through the use of network adapters. The continual integration of voice and data services further fuels this demand for IP telephony applications.

A number of factors play a crucial role in the acceptance of IP telephony. A key consideration the preservation of traditional call features (e.g., Centrex features), while minimizing cost. Another consideration is conformance with standards, which are continually evolving for Internet VoIP, DTMF signaling, as well as other Internet distributed computing areas, including Quality of Service (QoS) methodologies. These standards are important for IP to Public Switched Telephone Network (PSTN) interoperability, as interoperability with legacy networks is needed to the adoption in the marketplace.

Long term cost savings through increased efficiency is a motivator for customers to move to a converged solution. For example, by combining telecommunications and data communications administration, customers can eliminate redundant functions and streamline their operations. Additionally, customers are attracted to a converged solution because of the potential for new services and enhance functionalities. To ensure the highest success rate with the customers, the service providers need to build a network that provides consistent call quality, service reliability and security. It is essential that the IP Telephony solutions meet the customer demands of high-quality, ease of use, superior customer service, and lower cost.

Therefore, there is a need for an approach for efficiently performing telephony services over a data communications system. Additionally, there is a need to support robust call features. There is also a need to reduce the complexity of call establishment associated with the call features and to ensure timely and accurate call routing. Also, there is a need to preserve a standard architecture to promote deployment of network services, while minimizing system complexity. There is a further need to reduce administration and operational costs.

SUMMARY OF THE INVENTION

These and other needs are addressed by the present invention in which an integrated communication system provides telephony and data services over a data network. The system utilizes, in an exemplary embodiment, a Session Initiation Protocol (SIP) server that is logically partitioned into a location server and a proxy server. The location server that receives a request from a calling station to establish a call with a station associated with a called party. The location server generates a message specifying a set of addresses relating to the called party and context information. The proxy server communicates with the location server and receives the message from the location server; the proxy server attempts to establish the call, either serially or in parallel, based on the set of addresses. The proxy server iteratively queries the location server to obtain another set of addresses if no prior address results in establishment of the call. Under the above arrangement, call features, such as Call Forwarding Unconditional, Call Forwarding Conditional, Call Screening, Call Blocking, and Find-Me, are efficiently and accurately performed over a data network.

In one aspect of the present invention, a communication system for establishing a call over a data network is disclosed. The system includes a first server module that is configured to receive a request from a calling station to establish a call with a station associated with a called party. The first server module generates a message specifying a set of addresses relating to the called party and context information. A second server module communicates with the first server module and is configured to receive the message and to attempt to establish the call based on the set of addresses. The second server module iteratively queries the first server module to obtain another set of addresses if no prior address results in establishment of the call.

In another aspect of the present invention, a method for establishing a call over a data network is disclosed. The method includes receiving a request from a calling station to establish a call with a station associated with a called party. The method also includes generating a message specifying a set of addresses relating to the called party and context information, and transmitting the message to a proxy server configured to attempt to establish the call based on the set of addresses. Further, the method includes selectively receiving iterative queries from the proxy server to obtain another set of addresses if no prior address results in establishment of the call.

In another aspect of the present invention, a network device for establishing a call over a data network providing connectivity for a plurality of nodes is disclosed. The device includes a location module that is configured to receive a request from one of the plurality of nodes associated with a calling party to establish a call with another one of the plurality of nodes associated with a called party. The location module is configured to store a plurality of addresses corresponding to the plurality of nodes and to generate a message specifying a set of the plurality of addresses relating to the called party. The device also includes a proxy module that is coupled to the location module and configured to receive the message and to attempt to establish the call based on the set of addresses. The proxy module iteratively queries the location module to obtain another set of the plurality of addresses if no prior address results in establishment of the call.

In another aspect of the present invention, a network device for establishing a call over a data network is disclosed. The device includes transmission means for receiving a request from a calling station to establish a call with a station associated with a called party, and means for generating a message specifying a set of addresses relating to the called party and context information. The message is transmitted to a proxy server that is configured to attempt to establish the call based on the set of addresses. The proxy server iteratively submits queries to obtain another set of addresses if no prior address results in establishment of the call.

In yet another aspect of the present invention, a computer-readable medium carrying one or more sequences of one or more instructions for establishing a call over a data network is disclosed. The one or more sequences of one or more instructions includes instructions which, when executed by one or more processors, cause the one or more processors to perform the step receiving a request from a calling station to establish a call with a station associated with a called party. Another step includes generating a message specifying a set of addresses relating to the called party and context information. Yet other steps include transmitting the message to a proxy server configured to attempt to establish the call based on the set of addresses, and selectively receiving iterative queries from the proxy server to obtain another set of addresses if no prior address results in establishment of the call.

Still other aspects, features, and advantages of the present invention are readily apparent from the following detailed description, simply by illustrating a number of particular embodiments and implementations, including the best mode contemplated for carrying out the present invention. The present invention is also capable of other and different embodiments, and its several details can be modified in various obvious respects, all without departing from the spirit and scope of the present invention. Accordingly, the drawing and description are to be regarded as illustrative in nature, and not as restrictive.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which:

FIG. 1 is a diagram of a data communications system capable of supporting voice services, in accordance with an embodiment of the present invention;

FIG. 3 is a flow diagram of a process for registering a Session Initiation Protocol (SIP) phone, according to an embodiment of the present invention;

FIG. 4 is a flow diagram of a process for completing a call to a SIP phone from a gateway, according to an embodiment of the present invention;

FIG. 5 is a flow diagram of a process for completing a call from a SIP phone to a gateway, according to an embodiment of the present invention;

FIG. 6 is a flow diagram of a process for providing a Find-Me service, according to an embodiment of the present invention;

FIG. 7 is a diagram a SIP server having recursive query capability, according to an embodiment of the present invention;

FIG. 8 is a diagram of an exemplary message format containing context information used by the SIP server of FIG. 16;

FIG. 9 is a flowchart of a process for performing recursive querying to establish a call, according to an embodiment of the present invention;

FIG. 10 is a diagram showing the chaining of multiple Find-Me lists;

FIG. 11 is a diagram showing the interaction of the proxy server and the location server in performing recursive querying, in accordance with an embodiment of the present invention; and

FIG. 12 is a diagram of a computer system that can be used to implement an embodiment of the present invention.

DESCRIPTION OF THE PREFERRED EMBODIMENT

In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It is apparent, however, to one skilled in the art that the present invention may be practiced without these specific details or with an equivalent arrangement. In other instances, well-known structures and devices are shown in block diagram form in order to avoid unnecessarily obscuring the present invention.

Although the present invention is discussed with respect to the Session Initiation Protocol (SIP) and an Internet Protocol (IP)-based network, it may be appreciated that one of ordinary skill in the art would recognize that the present invention has applicability to other equivalent communication protocols and data networks, in general.

FIG. 1 shows a diagram of a data communications system capable of supporting voice services, in accordance with an embodiment of the present invention. An integrated system 100 is provided to support voice communications across data networks and to utilize an advanced operations and support system (OSS). The system 100 addresses customers requests for packet voice services and provides these customers an enhanced voice offering that enables them to keep their existing infrastructure and capabilities, while migrating toward a converged environment. As used herein, the term “SIP phone” refers to any client that is configured to provide SIP phone functionalities (e.g., a PC, a web-appliance, etc.). It is noted that the network does not perceive a difference between SIP phone clients, and “soft” PC-based clients. PC-clients and SIP phones 109 do not require different treatment in the network.

For the purposes of explanation, the capabilities of the system 100 is described with respect to large enterprise customers; it is noted that the feature/functionality of the system 100 is applicable to a broad base of business customers. The system 100 supports customers that maintain multiple locations with voice and data requirements.

The communication system 100 includes a data network 101, which in an exemplary embodiment, is an Internet Protocol (IP) based network. The system 100 provides a number of SIP elements to support the voice services; these SIP elements include an enterprise gateway 103, a Dedicated Access Line (DAL) gateway 105, a network gateway 107, SIP phones 109, SIP Clients 111, and a SIP proxy server 113 (i.e., Network Server (NS)) and SIP location server 115 (i.e., Redirect Server (RS)). The proxy server 113 and location server 115 together constitute a SIP server, which is more fully described below, particularly with respect to FIG. 16. The location server 115 serves as a repository for end user information to enable address validation, feature status, and real-time subscriber feature configuration; additionally, the RS 115 may store configuration information. As used herein, the term “user agent” denotes a SIP enabled device that may include the SIP phones 109, the SIP clients, and the gateways. The system 100 advantageously permits a single DAL gateway 105 to serve multiple customers and services, as more fully described with respect to FIGS. 16 and 17.

The SIP phones 109 may take the form of standalone devices—e.g., a SIP phone may be configured to function and appear like a Plain Old Telephone Service (POTS) telephone station. A SIP client 111, however, is a software client that runs, for example, on a personal computer (PC) or laptop. From a signaling perspective, these devices 109, 111 are identical; the differences relate to the user interface. Unless otherwise stated, it is recognized that the functionalities of both the SIP phones 109 and the SIP client 111 are equivalent.

To deliver the voice feature sets that customers have grown accustomed to, the SIP phone 109 and the system 100 are able to provide Private Branch Exchange (PBX) capabilities to the user. The system 100 supports Centrex-like services over an IP network 101. Centrex features process calls to hold, forward, and pickup during a calling session. The system 100 permits elimination of the PBX from the customers' networks, supporting call-handling features that can be easily handled under SIP, which is a robust and feature-rich protocol.

As shown, the enterprise gateway 103 provides connectivity from a PBX 117, which contains trunks or lines for a single customer or user (e.g., PBX phones 118). Incoming calls from the PBX 117 have the From header populated with a provisionable string which uniquely identifies the customer, trunk group, or carrier. This allows private numbers to be interpreted in their correct context. To interface the PBX 117, the enterprise gateway 103 may use Integrated Digital Services Network (ISDN), Circuit Associated Signaling (CAS), or other PBX interfaces (e.g., European Telecommunications Standards Institute (ETSI) PRI, R2).

The Dedicated Access Line (DAL) gateway 105 is employed in the system 100 to support private traffic between IP and non-IP locations. The network gateway 107 serves to support single or multiple customers by providing an SS7 (Signaling System 7)/C7-to-SIP Gateway for customers to have the ability to call Off-IP network from an IP-enabled origination point (e.g., enterprise gateway 103 or SIP phone 109). The gateway 107 may support connectivity to a voice switch (not shown), such as a Class 3 switch for domestic call processing and a Class 5 switch for interconnections and international connections. In this example, the gateway 107 communicates with the Public Switched Telephone Network (PSTN) 123, which serves POTS (Plain Old Telephone Service) stations 125.

Because the PSTN 123 is connected to the global Internet 127, directly or indirectly via the IP backbone network 101, communication among the voice stations 125, 118 that are serviced through the PSTN 123 and personal computers (e.g., PC 111) that are attached to the IP Backbone network 101 can be established (e.g., VoIP). Four possible scenarios exist with the placement of a VoIP call: (1) phone-to-phone, (2) phone-to-PC, (3) PC-to-phone, and (4) PC-to-PC. In the first scenario of phone-to-phone call establishment, a call from the phone 125 is switched through PSTN 123 by a switch to the SIP network gateway 107, which forwards the call through the IP backbone network 101. The packetized voice call is then routed through the network 101, exiting the Internet 127 119 at an appropriate point to enter the PSTN 123 and terminates at another phone (not shown). Under the second scenario, the phone 125 places a call to a PC through a switch to the PSTN 123. This voice call is then switched by the PSTN 123 to the SIP network gateway 107, which forwards the voice call to a PC 111 via the IP network 101. The third scenario involves a PC 111 that places a call to a voice station (e.g., phone 125). Using a voice encoder, the PC 111 introduces a stream of voice packets into the IP network 101 that are destined for the SIP network gateway 107. The SIP network gateway 107 converts the packetized voice information into a POTS electrical signal, which is circuit switched to the voice station (e.g., phone 125). Lastly, in the fourth scenario, a PC 111 establishes a voice call with another PC (not shown); in this case, packetized voice data is transmitted from the PC 111 via the IP network 101 to the other PC (not shown), where the packetized voice data is decoded.

As mentioned, the system 100 employs SIP to exchange messages. Internet SIP defines numerous types of requests, which are also referred to as methods. The first method is the INVITE method, which invites a user to a conference. The next method is the ACK method, which provides for reliable message exchanges for invitations in that the client is sent a confirmation to the INVITE request. That is, a successful SIP invitation includes an INVITE request followed by an ACK request. Another method is the BYE request, which indicates that the call may be released. In other words, BYE terminates a connection between two users or parties in a conference. The next method is the OPTIONS method; this method solicits information about capabilities and does not assist with establishment of a call. Lastly, the REGISTER provides information about a user's location to a SIP server. A detailed discussion of SIP and its call control services are described in IETF RFC 2543 and IETF Internet Draft “SIP Call Control Services”, Jun. 17, 1999; both of these documents are incorporated herein by reference in their entireties.

To better appreciate the present invention, it is instructive to examine the SIP architecture. SIP is an application-layer control (signaling) protocol for creating, modifying, and terminating sessions with one or more participants. Also, SIP is a client-server protocol, and as such, clients generate requests that are responded to by the servers. The layered nature of the architecture provides protocol separation and independence, whereby one protocol can be exchanged or modified without affecting the other higher layer or lower layer protocols. It is advantageous that the development of these protocols can occur concurrently and independently. The foundation of the architecture rests with the Internet Protocol (IP) layer. The IP layer provides an unreliable, connectionless data delivery service at the network level. The service is “unreliable” in the sense that the delivery is on a “best effort” basis; that is, no guarantees of packet delivery are made. Current standards provide two versions of IP: Version 4 and Version 6. One of the key differences between the versions concerns addressing; under Version 4, the address fields are 32 bits in length, whereas in Version 6, the address field has been extended to 128 bits.

Above the IP layer are the TCP (Transmission Control Protocol) and the UDP (User Datagram Protocol). The TCP layer provides a connection-oriented protocol that ensures reliable delivery of the IP packets, in part, by performing sequencing functions. This sequencing function reorders any IP packets that arrive out of sequence. In contrast, the User Datagram Protocol provides a connectionless service that utilizes the IP protocol to send a data unit, known as a datagram. Unlike TCP, UDP does not provide sequencing of packets, relying on the higher layer protocols to sort the information. UDP is preferable over TCP when the data units are small, which saves processing time because of the minimal reassembly time. One of ordinary skill in the art would recognize that embodiments of the present invention can be practiced using either TCP or UDP, as well as other equivalent protocols.

The next layer above the TCP and UDP layers in the IP telephony architecture supplies the necessary IP telephony signaling and includes the H.323 protocol and the Session Initiation Protocol (SIP). The H.323 protocol, which is promulgated by the International Telecommunication Union (ITU), specifies a suite of protocols for multimedia communication. SIP is a competing standard that has been developed by the Internet 127 Engineering Task Force (IETF). SIP is a signaling protocol that is based on a client-server model. It may be noted that both the H.323 protocol and SIP are not limited to IP telephony applications, but have applicability to multimedia services in general. In one embodiment of the present invention, SIP is used to create and terminate voice calls over an Internet 127. However, it is understood that one of ordinary skill in the art would realize that the H.323 protocol and similar protocols could be utilized in lieu of SIP. Above SIP is the Session Description Protocol (SDP), which provides information about media streams in the multimedia sessions, as to permit the recipients of the session description to participate in the session.

SIP can utilize either TCP or UDP. However, UDP is adopted in the preferred embodiment of the present invention. Similar to other IETF protocols (e.g., the simple mail transfer protocol (SMTP) and Hypertext Transfer Protocol (HTTP)), SIP is a textual protocol.

As seen in FIG. 1, the system 100 utilizes the Network Server (NS) 113 as a proxy, thereby providing a mechanism that acts as both a server and a client for the purpose of making requests on behalf of other clients. Requests are serviced internally or by passing them on, possibly after translation, to other servers. A proxy interprets, and, if necessary, rewrites a request message before forwarding it.

The Redirect Server (RS) 115 accepts a SIP request, maps the address into zero or more new addresses and returns these addresses to the client 109, 111. Unlike a proxy server (e.g., NS 113), the RS 115 does not initiate its own SIP request. Additionally, unlike a user agent server, the RS 115 does not accept calls. The RS 115 also can be viewed as a location server where information about a possible terminating location could be obtained. It is noted that messaging between the NS 113 and RS 115 may use a modified version of SIP. For example, no SIP ACK message is sent from the NS 113 to the RS 115. SIP messaging between the NS 113 and the rest of the network uses standard SIP as defined by IETF RFC 2543.

In the system architecture, the RS 115 uses an Intelligent Network Control Point (INCP) 119 for accessing dial plan information for existing private network customers. The INCP 119 is an additional database that the RS 115 queries for further information to route specific private calls.

The system 100 further includes an Operational Support Systems (OSS) 121 to provide provisioning, billing, and network management capabilities. In addition, the system 100 provides SIP conferencing systems 127 and a voice mail system 129; these systems 127, 129 are more fully described below.

The system 100 provides a rich set of call features, including Centrex features, and management functionalities. For instance, the system 100 supports Dialing Plan management, and Centrex features via OSS web-based screens. These features include the following: Unconditional Call Forwarding, Conditional Call Forwarding, Find-Me, Call Blocking, Call Screening, Alias Management, Password Change, and Default Address Management.

The system 100 utilizes, according to an exemplary embodiment, two types of profiles: user profiles (profiles associated with the users), and device profiles (profiles representing physical devices). A user profile is defined for customers via an on-line provisioning system of the OSS 121. The OSS 121 may be used by various users (e.g., account managers, order entry hubs, engineering, customer administrators, and subscribers). The OSS 121 provides the capability for customers to be able to define feature sets at two hierarchical levels: a customer administrator level, and a subscriber (user) level.

The system 100 supports the updating and management of the user profile, which manages an individual user's dial plan, Centrex features, and access settings. The system 100 also associates user profiles to users based on “Dial Plan ID” and “Username,” where the Dial Plan ID is specific to the overall customer and the Username is specific to the individual user.

As mentioned, the system 100 supports different user profile types that provide different levels of access and functionality within the OSS 121. The assigned profile may be based on the tasks the user performs and their security level. In an exemplary embodiment, the user profile types that are supported include: Account Manager, Customer Administrator, Subscriber, and Reporting User. It is noted that the available features that are enabled via a user profile type may apply to both SIP phone profiles and non-SIP phone profiles.

An individual user can have a user profile, whereby each profile in the OSS 121 is keyed to the Dial Plan ID (DPID) and an Account ID. All feature information is also keyed and stored under the Dial plan ID and Account ID association. An example of a Dial plan ID would be “10”; and an example of an Account ID may be a 9-digit Social Security Number (SSN) or location number.

The customer administrator (or account manager) may establish the Dial plan prefix. The Dial plan prefix is the first number that is dialed when a call is placed to a phone number or a URL address. Each SIP phone user defines a prefix plan for their device. The customer administrator (or account manager) is responsible for defining the dial plan prefix that is to be used throughout the corporation and system 100. The OSS 121 provides a prefix list within the user profile in order to determine whether an outgoing dialed number is a private number or a long distance number, and to also perform digit manipulation on the dialed string, if needed.

The system 100 supports Subscriber List Management by enabling the user to manage the list of subscribers for a given Dial Plan ID. Also, the user may manage the list of valid devices for a given Dial Plan ID.

SIP phone users who have a profile are provided by the system 100 with the following exemplary features: Call Forwarding Unconditional, Call Forwarding Busy/No-Answer, Find-Me, Call Completion to a registered SIP phone, Call Completion to a Default destination if SIP phone not registered, Call Screening, and Call Forwarding on Screening. Ring-timers per destination may be configurable as needed to support these features. The RS 115 and NS 113 invoke SIP phone profile-based features using parameters provisioned in the profile from the OSS 121.

The OSS 121 and RS 115 store various data that is associated with a profile. For instance, called phone numbers and/or Uniform Resource Locators (URLs) at which the user of that account can be reached are stored. In addition, alternative phone numbers or URLs, which are considered aliases for each account, are stored.

In the Find-Me feature, a Find-Me schedule provides a mechanism to route calls using an ordered list of possible destinations, wherein each destination is tried in turn. The possible destinations in a Find-Me list can be specific addresses associated with an account's profile. For instance, a specific cell-phone number or wire-line phone number can be a possible destination address. If the user has a SIP phone, dynamically registered addresses for their SIP phone can also be a possible destination. Calls routed to locations specified in the customer's Find-Me list are charged to the account that forwarded the call.

If the user has a PBX phone 118 behind an enterprise gateway 103, then that phone can also be a possible destination. In particular, the RS 115 and NS 113 perform the Find-Me feature. If Call Forwarding Unconditional is not active, and the user has subscribed to Find-Me, then Find-Me processing is applied for calls coming to a user. The Find-Me list is sent to the NS 113, and the NS 113 tries the sequence in turn until a successful call setup is encountered. The Find-Me list applies to all time periods and calling parties. For example, a list may be specified for different TOD/DOW blocks, and may be associated with different categories of calling numbers.

For a SIP phone profile, the Find-Me list can contain specific destination addresses provisioned in the user profile, and/or a reference to current registered addresses. For a traditional phone behind an enterprise gateway profile, the Find-Me list can contain specific destination addresses provisioned in the user profile, and/or a reference to the user's PBX-phone. The Find-Me list feature can be enabled for a user during account creation and then updated by the user. Entries made to the Find-Me list are verified against the Feature Blocking List for the subscriber's dial plan. The user profile has a link to update the Find-Me list. Specifically, the system 100 allows the user to Create, Read, Update, and Delete an inventory of potential devices, which can be used for populating Find-Me listings. The system 100 supports synchronization of the Find-Me List by providing an “apply” or “done” button that updates the RS 115 when finalized Find-Me list assignments have been completed.

The system 100 allows the user to set a Find-Me List default that is used in the case that a Find-Me list is not associated to a period of time on the calendar. This removes the need to assign Find-Me lists to every hour on the calendar. Also, the user may select the appropriate Time Zone to be used for Time of Day (TOD) routing associated with the Find-Me feature.

A label for the user selecting “SIP phone” and “PBX phone” is available to indicate that the system is to terminate to the SIP phone they are registered at or their PBX phone 118. The label displayed depends on the type of account that was created. The device value of, for example, “99” is saved for SIP phone and a 100 for a PBX phone 118 in the Find-Me list.

The enterprise gateway 103, DAL gateway 105, and SIP phones 109 support the ability to receive multiple provisional responses (18x responses). Upon reception of multiple 18x responses, these devices process the latest provisional response received and ensure the RTP stream associated with that provisional response is processed, ignoring all other RTP streams received for that particular call leg.

The system 100 also supports instant messaging (IM). Instant messaging or “chat” has become a useful tool in business communications. SIP-enabled chat platforms provide enhanced functionality and features. One feature is text based messaging, as specified in, for example, IETF RFC 2543bis02. Another feature is SIP Based Audio, in which connections to and from external SIP clients are supported; implementation of this feature may support RTP (Real Time Protocol)/AVT (Audio Video Transport) 0, in band DTMF signaling, and IETF RFC 2833. Also, a user configurable list of users to monitor for change of presence status is provided; i.e., a “buddy-list.” When a user logs on (initiates presence), this action may also generate a SIP REGISTER message with an external SIP proxy. Logoffs remove the SIP registration. Client login is authenticated, especially if encryption is supported. Passwords need not go across the network in plaintext; authentication protocols, such as Challenge Handshake Authentication Protocol (CHAP), may be used. The system also provides encryption for text based messaging, whereby the encryption may be end-to-end.

SIP phone users need to have the authentication-usernames and authentication-passwords provisioned in the system 100 in order for SIP phone registration and call completion to function correctly. Accordingly, the SIP phones 109 allow users to login and logout from the phone. In an exemplary embodiment, to provide mobility, the SIP phones 109 permit usernames and passwords to be entered for visitors. Logging in allows the SIP phone to assume the profile of the visitor. By logging in, incoming calls to the visitor's profile are directed to the phone. When a visitor logs in, SIP phones 109 register the visitor with the Network Server 113 and Redirect Server 115. Any incoming call to any of the profiles registered by the phone can be directed to the phone. The Network Server 113 and Redirect Server 115 has no knowledge of whether a user is logged in as a visitor, or is logged in to their usual home device, if there is one. The Network Server 113 and Redirect Server 115 logic is based strictly on the username delivered as a result of the proxy authorization challenge.

The user may change the device (e.g., SIP phone) password for access to the user profile. Additionally, the system 100 provides the user (e.g., customer administrator and account manager) with password reset functionality in the case that a customer has forgotten the device password.

In an exemplary embodiment, the SIP Gateways 103, 105, 107 and SIP clients 109, 111 comply with IETF RFC 2543, and IETF RFC 2543bis. For purposes of explanation, four call scenarios are described. The first is outside an established call. In this scenario, the gateway receives a request that does not match an existing call leg (i.e., the To, From, and Call-ID do not match any stored by the gateway). The second is during a setup of a call from a SIP phone to a gateway. The third is during the setup of a call from an enterprise gateway 103 to a SIP network gateway 107. The fourth is during an established session.

In the first scenario, the request arrives at the network gateway 107, the enterprise gateway 103, or the DAL gateway 105 with a Call-ID that does not match any existing call leg. The gateway 103, 105, 107 receives an OPTIONS request from a SIP phone and replies (as if to an INVITE) with 200 OK including Supported: 100rel (if true), Accept: applicaton/sdp, and Allow: INVITE, ACK, OPTIONS, BYE, CANCEL headers. If the gateway 103, 105, 107 receives a mis-routed REGISTER or other valid SIP request, the gateway 103, 105, 107 rejects with a 405 “Method Not Allowed” with Allow header containing a list of valid methods (e.g., INVITE, ACK, OPTIONS, BYE, CANCEL). If the gateway 103, 105, 107 receives an unknown SIP request, then the gateway 103, 105, 107 may reject with a 400 “Bad Request” with Allow header containing a list of valid methods (e.g., INVITE, ACK, OPTIONS, BYE, CANCEL).

In the second scenario, the SIP phone 109 or Client 111 calls either a network gateway 107, enterprise gateway 103, or DAL gateway 105. If the gateway 103, 105, 107 receives a SIP request via TCP, then the respective gateway 103, 105, 107 processes the request. In the case in which the gateway 103, 105, 107 to SIP phone TCP connection closes, if prior to INVITE/200/ACK exchange, then the session is treated as CANCEL. Otherwise, there is no change to the session. The TCP connection may need to be reopened to send BYE.

The gateway 103, 105, 107 may receive an INVITE without SDP. In such a case, because the network gateway 107, the enterprise gateway 103, or the DAL gateway 105 is unable to send early media to the SIP phone, the gateway 103, 105, 107 has a configurable option to either accept the INVITE and proceed with the call or to reject the call with a 488 “Not Acceptable Here”. When the gateway 103, 105, 107 receives an INVITE with a tag in the From header, the gateway 103, 105, 107 includes a tag in the call leg and use this tag throughout the session. The tag in the From header is mandatory for IETF RFC 2543bis. A User Agent Client (UAC) may include a tag in the From header when a new INVITE is created. If non-trusted elements exist in the architecture (SIP phones and outside callers), then the digits in the From header need not be mapped to the Calling Party Number and passed to the PSTN 123. If the gateway 103, 105, 107 receives INVITE without Contact header, then the gateway 103, 105, 107 accepts the INVITE and proceeds with the call. The Route header for future requests are constructed using the From header of the INVITE.

The gateway 103, 105, 107 may receive an INVITE with SDP (Session Description Protocol) with only unsupported codecs (coder/decoder); in this case, the gateway 103, 105, 107 sends a 488 “Not Acceptable Here” with a Warning 305 “Incompatible media format” if there is a codec mismatch or send a 606 “Not Acceptable” with a Warning 304 “Media type not available” if the media is specified as anything other than audio.

If the gateway 103, 105, 107 receives CANCEL prior to call being answered, then the gateway 103, 105, 107 needs to process CANCEL by sending a 200 OK as a response to the CANCEL request, sending a 487 “Request Terminated” as a response to the original INVITE, and releasing the PSTN side. It is noted that each transaction is independent of other transactions. Therefore a unique response may be sent to both the original INVITE and the CANCEL.

If the gateway 103, 105, 107 receives INVITE without Record-Route (NS 113 did not Record-Route), then the gateway 103, 105, 107 may accept the INVITE and proceed with the call.

The Contact header of the gateway, in an exemplary embodiment, may be formatted with the IP address, in dotted decimal format (e.g., xxxx@123.45.67.9).

If the gateway 103, 105, 107 receives INVITE with a Require header, then the gateway 103, 105, 107 rejects the request if the Require header lists a feature that is not supported by the gateway 103, 105, 107 by sending a 420 “Bad Extension” response. When sending the 420 “Bad Extension” response, a Supported header listing the supported features may be included.

The gateway 103, 105, 107 support the 100rel for Reliable Provisional Responses (PRACK). With respect to the gateway 103, 105, 107 receiving INVITE or other SIP request directly outside IPSec (IP Security) tunnel from NS 113, the gateway 103, 105, 107 may be configured to either silently ignore only INVITE messages or to silently ignore all messages that originate from an endpoint outside the IPSec tunnel.

When the gateway 103, 105, 107 sends a 183 Session Progress, the calling SIP phone plays an early media RTP sent by the gateway 103, 105, 107. The gateway 103, 105, 107 may be configurable for sending with or without SDP. This handles the instances where the PSTN 123 call expects a cut-through condition at the time a call proceeding message or ACM message was sent. This allows the SIP phone 109 to listen to any media sent by the PSTN 123. It is noted that the calling party may be required to IGNORE any SDP present in the 183 message unless both parties support a to-be-defined early media extension to SIP that allows two way early media.

When the gateway 103, 105, 107 receives an INVITE containing a tel URL in the Request-URI, To, or From headers, the gateway 103, 105, 107 proceeds with the call if the gateway 103, 105, 107 can parse the digits from the tel URL.

Turning now to the scenarios associated with the gateway 103, 105, 107 calling a SIP phone 109 or client 111. When the gateway 103, 105, 107 receives 180 Ringing, the gateway 103, 105, 107 generates local ringback to PSTN side. When the enterprise gateway 103 receives a 4xx, 5xx, or 6xx response, the enterprise gateway 103 generates a response to the PSTN side according to predetermined code mappings. The enterprise gateway 103 then releases the PSTN side.

In the case when the network gateway 107 or DAL gateway 105 receives 4xx, 5xx, or 6xx response, the network gateway 107 or DAL gateway 105 sends REL to the PSTN 123 with the appropriate cause code mapping. The gateway 103, 105, 107 may be configured to accept and process redirects or reject the 3xx response. If the 3xx is not accepted, the gateway 103, 105, 107 must fail the call.

When the gateway 103, 105, 107 receives a 180 Ringing followed by media packets prior to a 200 OK response, the gateway 103, 105, 107 may start local ringback on receipt of 180 Ringing, and ignore any incoming RTP media packets until the gateway 103, 105, 107 receives another request/response (i.e., normal message handling).

When the gateway 103, 105, 107 receives a 183 Session Progress, the gateway 103, 105, 107 plays media packets associated with the first RTP media stream and ignore all subsequent RTP media streams until it receives another request/response (i.e., normal message handling).

When the gateway 103, 105, 107 receives multiple 18x responses, the gateway 103, 105, 107 may start either local ringback on receipt of 180 Ringing, or play media packets on receipt of a 183. The gateway 103, 105, 107 handles all incoming 18x responses, giving precedence to the last 18x received. The gateway 103, 105, 107 does not mix ringback tone with any of the incoming media streams, and does not mix the media streams themselves.

When the gateway 103, 105, 107 receives 200 OK from SIP phone that specifies a codec that the gateway 103, 105, 107 does not support, the gateway 103, 105, 107 sends a BYE to terminate the call. The gateway 103, 105, 107 sends ACK in response to the 200 OK and then send a BYE to terminate the call with a Warning: 305 “Incompatible media format” header. Because each transaction is independent of other transactions, an ACK is required to close an INVITE transaction.

In the case when the gateway 103, 105, 107 receives 200 OK without Contact header, the gateway 103, 105, 107 accepts the 200 OK and proceeds with the call. The Route header for future requests is constructed using the To header of the 200 OK.

As for the gateway 103, 105, 107 mapping of PSTN 123 Calling Party Number to From header, the treatment of the call depends on the type of PSTN 123 signaling. With CAS, because there is no true Calling Party Number, the From header is always “From: unknown@xxxx.xxxx” in which “unknown” may be configurable (i.e., it may be “whocares” or a number representing the PBX) and the normal SIP rules for the From header are followed (e.g., IPv4 address, domain name, etc.).

In the case of PRI/ISUP with no Calling Party Number IE present in the SETUP/IAM msg, the treatment is that same as that of CAS. For PRI/ISUP with Calling Party Number IE present in the SETUP/IAM msg and PI=Restricted, the From header is always “From: anonymous@xxxx.xxxx” where “anonymous” may be configurable, but not as a number (i.e., it may be “whocares” but not a number representing the PBX) and the normal SIP rules for the From header are followed (e.g., IPv4 address, domain name, etc.). Further, for PRI/ISUP with Calling Party Number IE present in the SETUP/IAM msg and PI=Allowed, the From header is equal to “From: <Calling Party Digits from Calling Party Number IE>@xxxx.xxxx”.

During an established SIP phone to gateway 103, 105, 107 session, the request arrives at the gateway 103, 105, 107 with a Call-ID that matches an existing call leg. When the gateway 103, 105, 107 receives a re-INVITE with hold SDP, the gateway 103, 105, 107 replies with 200 OK with hold SDP (c=0.0.0.0) and stop sending RTP. Under this scenario, the gateway 103, 105, 107 starts a hold timer and send a BYE if the timer expires.

If the gateway 103, 105, 107 that is on hold receives a re-INVITE with normal SDP, the gateway 103, 105, 107 replies with 200 OK with normal SDP and resume sending RTP.

If the gateway 103, 105, 107 receives a re-INVITE with new SDP, the gateway 103, 105, 107 accepts the re-INVITE and proceeds with the session if the codec is supported. If the codec is not supported, the gateway rejects the re-INVITE with a 488 “Not Acceptable Here” with a Warning 305 “Incompatible media format.” If the codec is anything other than audio, the gateway 103, 105, 107 rejects the re-INVITE with a 606 “Not Acceptable” with a Warning 304 “Media type not available.” In both cases, the gateway 103, 105, 107 continues the existing session.

When the gateway 103, 105, 107 receives a BYE with Also header, the gateway 103, 105, 107 either generates a new INVITE based on the Also URL or reject the BYE. If BYE with Also is rejected, then a 406 “Not Acceptable” response may be sent.

When the gateway 103, 105, 107 supports standard unattended/attended transfers, the gateway 103, 105, 107 supports the REFER/NOTIFY method of attended call transfers draft.

In the event that the gateway 103, 105, 107 experiences a codec change in RTP without re-INVITE, if the new codec is listed in offered SDP, accept, otherwise send BYE.

The gateway 103, 105, 107 supports a media inactivity timer that can distinguish between silent suppression and the case in which no packets are being sent. The gateway 103, 105, 107 also supports the ability to close a media connection if, after a specified period of time, no media is exchanged. The timer may be configurable for up to at least one hour. In an exemplary embodiment, the timer is a RTCP-based media inactivity timer.

With respect to billing, the network gateway 107 places both the originating and terminating DPID header, inserted by the NS 113, into the billing record (e.g., Orig-Dial-Plan: 123 or Term-Dial-Plan: 456). Each INVITE contains one Orig-Dial-Plan header and may contain a Term-Dial-Plan header depending on whether the call was forwarded.

The gateway 103, 105, 107 supports hair-pinning, in which the INVITE sent by gateway 103, 105, 107 to NS 113 may get proxied back to the same gateway 103, 105, 107 with a different Request-URI (telephone number). The gateway 103, 105, 107 does not fail this call as a SIP signaling loop, but processes the INVITE and hairpin the call back to the PSTN 123. The media (RTP) does not need to be hair-pinned through the IP network, but the SIP signaling is routed through the NS 113. This feature is used for Transfers and Find-Me service.

The network gateway 107 and DAL gateway 105 support prompts and collection of digits from PSTN 123. The gateway 103, 105, 107 collects of a single set of DTMF digits from the PSTN 123 using simple tone interface. The collected digits then is mapped into the Request-URI as sip:yyyy@8xxxxxxxxx.ns.wcom.com, where yyyy are the collected digits and 8xxxxxxxxx is the toll free number dialed (Called Party Number). The capability to perform this function may be configurable on a per dialed number basis.

The network gateway 107 supports the ability to configure an NS 113 as an outbound proxy. Specifically, the network gateway 107 provides the ability to configure at least two SIP proxies based on IP addresses.

In addition, the network gateway 107 provides the ability to resolve a domain name into an IP address using a DNS A record or a DNS SRV record. Additionally, the network gateway 107 may resolve a domain name into an IP address or configure an IP address and then direct the SIP INVITE message to that address. The format of the proxy name may be represented as a fully qualified domain name and/or an IP address.

In the case of shared local gateways, trunk selection by the shared local gateway is based on a four-digit trunk number prefixed by the system 100 to the outgoing local number. When shared local gateways are implemented, OSS 121 implements the appropriate manual or automated processes required to manage Local Gateways, such as managing trunk group assignments for customers and customer locations.

Customer premises local gateways provide inbound local calls. For inbound local calls, the local gateway does not add a 4-character prefix used to identify the trunk group, but instead uses the country code filed on the trunk-group and convert the received called party number to an E.164 formatted SIP URL. The received calling party number and name are not included in the outgoing INVITE message.

The OSS provisioning of a local gateway on a customer premise is the same as provisioning of a shared local gateway. There are no OSS changes required of a customer premise and a network based gateway. The provisioning of a premise based gateway would be the same as provisioning of a new network gateway 107.

The SIP phones 109 and clients 111 support a number of functionalities. In an exemplary embodiment, the SIP phones 109 support IETF RFC 2543 and draft-ietf-sip-rfc2543bis-03.txt. These SIP phones 109 are configured to support various call features, as more fully described below. For example, the SIP clients are able to set the state of the phone as “Do Not Disturb.” Clients respond to new INVITES with a “486 Busy Here.” Clients respond to re-INVITES on existing call legs as normal. In addition, the SIP phones 109 allow users to dial a complete SIP URL; this includes all alphanumeric characters allowed in legal SIP URL. The SIP phones 109 are able to place a call on hold; the SIP phones 109 ring after a call has been on hold for predetermined period of time (e.g., 3 minutes). The SIP phones 109 support multiple calls (e.g., two or more calls) by placing the current call “on hold” and initiating or receiving another call. A Call Waiting Indicator is used in the SIP phones 109 such that when already participating in a call, the user is alerted audibly and/or visually of another incoming call. Further, the SIP phones 109 support a message waiting indicator for integration with voicemail platforms.

The SIP phones 109 provide an “emergency number” and “emergency gateway” for emergency services support. When the “emergency number” is dialed (e.g., 911), the INVITE is sent directly to the “emergency gateway”. The “emergency gateway” may be a SIP SRV name, a hostname, or an IP address. If an IP address is specified in the “emergency gateway”, the phone need not rely on DNS for this call to complete. SIP phones 109 support an “emergency output number”. When the user dials “911” the number sent to the emergency gateway is configurable. For emergency numbers (e.g., 911), the SIP phone sends the credentials (username/password) of the static profile. The SIP phones 109 generate in-band DTMF tones (audio mixing). The SIP phones 109 can send DTMF, for example, as specified by IETF RFC 2833. When the “emergency number” is dialed, the static profile (re: Dynamic Login/Logout) is used. As mentioned earlier, the SIP phones 109 support an unattended transfer and attended call transfer. Further, the SIP phones 109 support Music ON Hold.

The SIP phones 109 support a default domain. The provisioned user identity on the phone includes a full URL to be included in the SIP From: header, or a provisioned domain name is appended. This provisioned domain name may be different than the outbound SIP proxy address, as shown below:

-   -   Name: userA     -   Proxy Address: sip.outbound.domain.com     -   Domain: domain.com

REGISTER sip:domain.com SIP/2.0

-   -   To: sip:userA@domain.com     -   From: sip:userA@domain.com     -   Contact: sip:userA@clientX.domain.com     -   Call-ID: 1234431@135.222.20.20     -   CSeq: 8 REGISTER     -   Via: SIP/2.0/UDP 135.222.20.20     -   Expires: Sun, 06 May 2005 16:00:00 GMT

Further, the SIP phones 109 are able to support handset based conferencing. A SIP phone 109 can initiate and mix the audio streams of separate calls; e.g., at least two separate calls (i.e., 3 way conference calling).

In support of user mobility, the SIP phones 109 store a static profile in non-volatile memory so that this information is available during the power up sequence. The SIP phones 109 allow a user to walk up to a phone, login, and send/receive calls with the associated profile information.

Further, the SIP phones 109 support SIP Digest Authentication in compliance with, for example, IETF RFC2543. The SIP phones 109 support AVT payload type 0 (G.711 mono μLaw/8000) and silence suppression with the G.711 or G.729 codec. In addition, these phones 109 provide AVT payload type 18 (G.729r8). The SIP phones 109 generate local ringing and ignore any prior RTP media when a “180 Ringing” response is received. The SIP phones 109 play the first RTP stream, ignoring any other RTP media streams when a “183 Session Progress” response is received. The SIP phones 109 obey the last 18x message received when multiple 18x responses received. If the last response is “180 Ringing”, the phone 109 generate local ringing. If the last response is “183 Session Progress”, the phone plays the RTP stream. With respect to E.164 and DNS, the SIP phones 109 support ENUM (Electronic Number) service, which is be used to route calls that originate in the IP domain or with ENUM-enabled networks. ENUM service is detailed in IETF RFC 2916, entitled “ENUM”, which is incorporated herein by reference in its entirety. The SIP phones 109 also support LINCP for client-based directory lookup.

The SIP phones 109 also provide Automatic Ringdown, wherein a URL is automatically dialed when the phone goes off-hook. If the “Reason Phrase” of a response message is displayed, the phone uses “Reason Phrase” in the response packet; the phone does not use an internal “Status Code” table.

According to an embodiment of the present invention, the SIP phones 109 support a number of features. For example, the SIP phones 109 provide numeric and URL dialing, in which the SIP phones 109 are able to dial extensions (e.g., 5555 for configurations with 4 digit extensions), E.164 numbers (e.g. 9727293660) and URLs (e.g., user company.com). As discussed earlier, the SIP phones 109 support a “Do Not Disturb” feature, which when enabled causes the phones to return an unavailable status (e.g., SIP message 486 Busy here) to the proxy, so that the proxy can route the call to a subsequent address, if there is one.

Enabling the “Do Not Disturb” feature (which is a client based feature) causes the phone to return an unavailable status to the NS 113, so that the NS 113 can route the call to a subsequent Call Forwarding Busy address, if there is one. The Do Not Disturb feature is supported by the OSS 121 by collecting the Call Busy Forwarding Address as part of a subscriber and device profile. When Do Not Disturb is invoked on a SIP phone 109, the SIP phone 109 returns a Busy message to the NS 113. For example, the phone returns a busy signal instead of ringing when an incoming call arrives. The NS 113 then routes the call to the Call Forwarding Busy address, if one has been supplied by the profile in question. That is, when the SIP phone 109 returns a “486 Busy” message, the Network Server 113 and Redirect Server 115 can make intelligent routing decisions.

Further, the SIP phones 109 possess features that are found in traditional phone sets. For example, the SIP phones 109 support call transfer, hold, and call waiting. An attended transfer allows the user making the transfer to communicate with the new location before the transfer; and an unattended transfer blindly transfer calls to a new location without the ability of the user making the transfer to announce the transfer.

As mentioned above, there are two types of transfers that can be invoked from a SIP phone 109—either an attended transfer or an unattended transfer. The SIP phones 109, for example, may include a “Transfer” button, such that when a call is in progress, the user can press the “Transfer” button to initiate a call transfer. In the first case, it is assumed that party A wishes to transfer party B to party C. In an attended transfer, party A contacts party B first, and has an opportunity to talk with party B, before completing the transfer. In an unattended transfer, party A invokes the transfer without contacting party B first. The transfer is accomplished via two steps. First, a Refer message is sent from party A's device to party B's device. Second, a new INVITE is created from party B's device to party C, but containing context from the Refer.

Call transfers can be invoked from SIP phones 109, in which all call transfers are permitted, with the following two exceptions. Assuming party A transfers party B to party C, if A is a subscriber, and A is prevented from calling C by Call Feature Blocking, then the transfer is blocked. Also, if the call from B to C involves a charge, and party A is not a trusted user, then the transfer is blocked; otherwise, party A is billed.

The Network Server 113 and Redirect Server 115 may apply several policies to transfer messages. First, on the Refer, the Network Server 113 and Redirect Server 115 needs to verify that party A is allowed to transfer to party C. Second, the Network Server 113 and Redirect Server 115 needs to put a digital signature on the Refer, so that when the subsequent INVITE from B to C happens, an NS 113 recognizes this as a valid transfer, and know which party to bill. Third, in the case that party B's SIP device is a network gateway 107, the Network Server 113 and Redirect Server 115 include a billing tag for party A that the network gateway 107 can use to bill the B-to-C leg.

The enterprise gateway 103 cannot initiate a call transfer. Transfers can only be initiated from a native SIP client and can only terminate to a native SIP client. The enterprise gateway 103 is responsible for processing SIP messages associated with the call transfer as defined for a SIP client.

Also, the network gateway 107 does not initiate a call transfer function. Transfers can only be initiated from an IP-based client and can only terminate to an IP-based client. The network gateway 107 is responsible for processing SIP messages associated with the call transfer as defined for a SIP client. The network gateway 107 is also responsible for creation of a billing record for the new call upon successful completion of the call transfer. The billing record is created using the INVITE message created by the network gateway 107 in response to the SIP REFER message. The SIP REFER message also contains the originating dial plan header. The network gateway 107 records the originating dial plan header, from the REFER message, in the billing record associated with the subsequent INVITE message.

Likewise, the DAL gateway 105 does not initiate a call transfer function. The DAL gateway 105 is responsible for processing SIP messages associated with the call transfer as defined for a SIP client.

Similarly, the local gateway cannot initiate a call transfer function. The local gateway is responsible for processing SIP messages associated with the call transfer as defined for a SIP client.

The blocking plan that is used to determine if the caller can transfer a call is collected by the OSS 121 and sent to the RS 115. Transferred calls are billable to the subscriber who initiated the transfer if the call terminates to an Off-net location. The originating and terminating dial plan included on the billing record allows for the user who transferred the call to be identified.

The user may place a call on hold so that no audio is transmitted in either direction. The user may then take the call off hold and resume the communication. In addition, SIP phones 109 allow users to place calls on consultation hold, in which the user may place a call on hold, and originate another call with privacy. From the network perspective, Consultation Hold appears as two individual calls. When the SIP phone 109 places a call on hold, it signals (SIP re-INVITE) to the other SIP endpoint to suspend the media stream. All the gateways 103, 105, 107 (i.e., enterprise gateway 103, network gateway 107, DAL gateway 105, and local gateway) must recognize the SDP value of 0.0.0.0, which designates an INVITE with HOLD. Consultation Hold generates the same billing records as normal call terminations and would not be differentiable by OSS 121 from standard call origination and terminations. As such there are not different requirements of the OSS 121 with this feature.

In an exemplary embodiment, the SIP phones 109 have a “Hold” button. During a call, the user can press the “Hold” button to temporarily mute the speaker and microphone. While active, the callee cannot hear the caller and the caller cannot hear the callee. The user can press the button for the line and resume communications.

With respect to call waiting, SIP phones 109 may provide users with an audible tone (along with a visual indicator) to indicate that an incoming call is waiting. As a client feature, Call Waiting is treated as an ordinary SIP call from a network perspective. Further, SIP phones 109 use DTMF tones, such that using the keypad during a conversation causes the keystrokes to be signaled. In-band DTMF as well as out-of-band DTMF is supported. By way of example, the DTMF tones are carried in-band, over a media stream. From the network perspective, the DTMF packets appear as regular media packets, wherein one SIP endpoint encodes and mixes the tones with the media stream, while the other endpoint decodes the tones. The gateways 103, 105, 107 (e.g., enterprise gateway 103, network gateway 107, DAL gateway 105, and local gateway) perform pass-through functionality for both the Time Division Multiplexing (TDM) voice signals and the RTP voice stream for in-band DTMF signals.

Additionally, the SIP phones 109 support three-way conference calling, whereby a user may add another user to an existing call so that all three users participate in the same conversation. Because three-way conferencing is a client feature, from a network perspective, the conference call appears as two individual calls. The SIP phone mixes the media paths of two individual calls to provide three-way conferencing. The three-way conferencing extension of a second call leg generates the same billing records as normal call terminations.

SIP-based voice mail is supported, in which the SIP phones 109 may provide a message waiting indicator to notify the presence of voicemail. That is, the SIP phones 109 receive message-waiting notifications from the voice mail system 129, and display an indication on the SIP phone. Calls are routed to the voice mail system 129 by the Network Server 113 and Redirect Server 115 for calls that meet certain conditions, which include calls that indicate a Busy or Ring No Answer condition from the called SIP User Agent of the voice mail subscriber. Calls to voice mail can also occur as a Find-Me/Follow-Me termination option, or as an Unconditional Call Forward selected by the user.

Calls by the user to log in and retrieve messages are routed to the voice mail system 129 as a SIP endpoint. A voice mail address can be entered for any destination address in the RS 115. For instance, the Call Forwarding Unconditional address or Find-Me address, etc., can be the SIP URL of a voice mail account.

Users of the system 100 are provided with the capability to integrate voicemail services based upon SIP. All requests for voice mail (VM) services use the SIP Request-URI. The SIP enabled voice mail system 129 supports all alphanumeric SIP URLs, Headers, Request, Methods and Status codes (e.g., per IETF RFC 2543). The voice mail system 129 supports SUBSCRIBE and NOTIFY methods. The voice mail systems 129 also supports Message Waiting Indicator (MWI). Further, the voice mail system 129 supports the event header on every Notification in change in message status to the client.

The voice mail system 129 resolves a Domain Name into an IP Address using a DNS SRV Record. The voice mail system 129 need not assume that remote clients transmit RTP packets using a fixed payload size. Establish connections to SIP clients with varying payload size. The VM also supports the Network Timing Protocol (NTP version) as well as various RTP/AVP payload types (e.g., G.711, G.726, 723, 728 and 729 codecs). In addition, the voice mail system 129 need not assume that remote IP clients send and receive media from the same port, or even the same address.

The voice mail system 129 supports DTMF digits that are transported Inband via G.711. It is desirable to have AVT tones handling implemented as described in using low bit rate codec, demonstrate codec switching. DTMF information may also be transported in the INFO method.

The voice mail system 129 may restrict access to the system through a variety of mechanisms. VM access may be secured through private access code. The access code may be supplied in the SIP Invite message or through DTMF. The voice mail system 129 may reject messages based on the IP address of the Proxy. If the message is coming from a proxy that is not trusted, then the voice mail system 129 is able to deny messages.

As regards network management, the system 100 supports, for example, Simple Network Management Protocol (SNMP) v2. The system 100 defines minimum traps for support: Link Up/Down on all IP Network interfaces (Ethernet) for the systems, and Login/Bad login (all logins and bad logins) is set in Management Information Base (MIB) definition for administrators and subscribers. The voice mail system 129 may provision the IP address of an SMNP collector for forwarding of SMNP traps. The voice mail system 129 allows configurable SMNP community string and SMNP port number for forwarding traps to external SMNP collector.

In an exemplary embodiment, the system 100 utilizes a SIP conferencing system 127, which may be implemented as a centralized conference server to provide audio conferencing capabilities. The conferencing system 127 may support G.711 (RTP/AVT 0), as well as other codecs. Two modes of operation may be specified: a Reserved mode and an Instant Conferencing mode. Under the Reserved mode, the users are required to reserve a bridge ahead of time. The Instant Conferencing mode refers to the ability to set-up conference as needed without any need for advance reservation, allowing ad-hoc set-up of conferences as well permitting client based conferences to migrate to a bridge.

Conference access is secured through an access code. Participants joining the bridge can send their pass code in the SIP Invite message. Black phone users can enter through DTMF depending on the support for DTMF at the gateway.

An audible tone may be played to announce each participant as they join the bridge. The system supports a coordinator/operator initiated conference, wherein the operator dials-out to each of the conference participants and brings them into the conference. The conference operator can enter and announce the name of the participants into the conference. The conference coordinator can notify the participants of the time and date for the call.

The operators may be able to put parties On and Off Hold. Also, Music On Hold is supported, whereby the parties on Hold are provided with audio content.

In addition, the conferencing system 127 permits private conferencing (i.e., sub-conferencing), wherein designated conference callers may confer privately within a conference call and then be returned to the main call.

Also, the operator may place some participants in a listen-only mode while others are speaking, thereby allowing orderly “Questions and Answer sessions” without interruptions. The conference leader can monitor the call and prevent additional participants from joining the call, thereby ensuring confidential conversations.

Conference calls can be initiated off of a list containing the participants' names and contact addresses. Standing reservation is supported for regularly conducted calls.

The conferencing system 127 also supports opinion polls, which allow participants to enter their responses via DTMF. Conference calls can be recorded for later re-play; the playback may be over the web, for example.

The conference coordinator can periodically monitor the conference to resolve quality issues as well as answer questions. In addition, the conference coordinator can pre-screen participants as they enter the conference. A web interface can be implemented to manage the calls, such that conference leaders can view the following information: list of participants, line status of each participant, and polling results if the Opinion Polls feature is enabled. In-band DTMF detection is supported; this feature allows participants to enter pass codes and preferences during opinion polls. Via a web interface, the conference leaders may easily add and drop participants.

Conference access may be secured through private access code. The participants may be required to provide access code before joining the conference. This access code may be supplied in the SIP Invite message or through DTMF by the SIP-client. The URI strings need to be opaque to the conference platform; the conferencing system 127 does not impose any semantics on the structure of these URI strings.

Calls from the PSTN 123 may be forwarded to the conferencing system 127 by the network gateway 107. From the perspective of the conferencing system, a SIP originated call is not processed differently than a non-SIP call because the gateway is able to translate the called number to a conference URL. However, the platform is able to validate the caller by prompting for passwords and validating the password entered as DTMF digits.

As an alternate to password collection through DTMF, the conferencing system 127 may support authentication using SIP. In this scenario, the SIP INVITE message carries additional user parameters, such as username/password combination that may be used by the platform to validate the user.

Further, the conferencing system 127 supports web based provisioning by the users. These platforms interface with the OSS 121 for provisioning, alarming and reporting. The provisioning and reporting interface of the OSS 121 assists with a number of conferencing functionalities, such as the capability to Setup, Modify and Delete conferences. The administrator or moderator of the conference is able to specify the number of attendees to a conference, as well as specify duration of the conference, date and time-by-time zone, and name of reserved conference.

A billing association (i.e., bill to account or company) can also be made through the provisioning interface by the administrator or moderator. The administrator or moderator of the conference is also able to specify an expiration time for reserved conference. Additionally, the system may provide mail notifications to participants of the conference information for reserved conferences. By way of example, the email notification to the administrator or moderator may be provided for following events: conference set-up fails due to not inadequate number of available ports on the bridge, conference start, list of participants, and conference end.

Significant call events, which include conference start, conference end, participant joining, participants leaving etc., are logged. Call logs are used to generate billing in accordance with the capabilities and requirements of the OSS 121. Call logs may be separated from fault and alarm logs. Additionally, these log files reside in a single directory and are archived based on configurable parameters.

The system 100 has several advantages over other approaches, such as IP PBX solutions, including scalability, network-based equipment and support. The system 100 offers advantages to customers who seeks to retain their existing network equipment, and therefore, lower their cost of entry into IP based voice services.

The system 100 advantageously provides simplified telecommunications pricing, ordering, and maintenance as well as eliminates the need for the customers to own and manage their own phone system functionality. Further, the system 100 reduces telecom staffing/costs. The services that are provided by the system 100 are not industry specific and may appeal to customers with multiple, disperse locations, those with international locations, and those with a heavy investment in packet networks.

While conventional approaches provide applications via third parties, the present invention provides a network that is based and designed to interoperate with each other. Importantly, it is the standards based, non-proprietary approach taken by the system 100 that provides service differentiation from the perspective of the customer. This approach provides longevity and extensibility to the customer. However, some customers may prefer to own the equipment and have more control over its uses, regardless of its long-term viability. Therefore, the present invention effectively addresses this scenario as well by providing a seamless interface with the customer premise equipment (CPE).

FIG. 4 is a flow diagram of a process for completing a call to a SIP phone from a gateway, according to an embodiment of the present invention. Under this scenario, the device associated with User A is an enterprise gateway, and the device of User B is a SIP phone. As with the process of FIG. 3, the labels, “User A” and “User B,” denote the devices associated with the respective users. User A calls User B through a network server, NS1, working as a proxy server. Specifically, in step 401, User A sends a SETUP message to another enterprise gateway X, triggering the gateway to issue an INVITE message to NS1, per step 403. Next, the NS1, as in step 405, forwards the INVITE message to the RS 115 and then sends a 100 TRYING message to the gateway X (step 407). In step 409, the gateway X sends a CALL PROCESSING message to User A. In step 411, the NS1 transmits an INVITE to User B, which responds by sending a 180 RINGING message (step 413). The 180 RINGING message is sent from the NS1 to the gateway X, per step 415. In step 417, the gateway X sends a PROGRESS message to User A, establishing a one way speech path.

Next, User B answers the call by transmitting a 200 OK message to the NS1, as in step 419; the NS1 then forwards the 200 OK message to the gateway X (step 421). In step 423, the gateway X sends a CONNECT message to User A. In steps 425-429, User A acknowledges with an ACK message to User B via the gateway X and the NS1. At this point, a two way speech path is established.

After communicating with User A, User B disconnects the call by sending a BYE message to the NS1, as in step 431. In step 433, the BYE message is sent by the NS1 to the gateway X. The gateway X, in step 435, issues a DISCONNECT message to User A. The gateway X, as in step 437, also sends a 200 OK message to the NS1 in response to User B's request to terminate the call. The NS1, as in step 439, forwards the 200 OK message to User B. Concurrently, User A sends a RELEASE message to the gateway X, per step 441; the gateway X then responds with a RELEASE COMPLETE message (step 443).

FIG. 5 is a flow diagram of a process for completing a call from a SIP phone to a gateway, according to an embodiment of the present invention. As with the previous flow diagrams, this call flow is explained with the clients (i.e., devices) referred to by the association with the user. In this example, User A is a SIP phone and User B is an enterprise gateway or network gateway 107. User A calls User B through NS 113 1. Accordingly, in step 501, User A sends an INVITE message to the NS1, which then responds with a 407 PROXY AUTHORIZATION message (step 503). User A acknowledges the 407 PROXY AUTHORIZATION message with an ACK message, per step 505. In step 507, User A sends an INVITE message to the NS1; the message is relayed to the RS 115, per step 509. The NS1 also sends a 100 TRYING message to User A, per step 511.

In step 513, the RS 115 sends a 300 MULTIPLE CHOICES message to the NS1. In step 515, the NS1 transmits an INVITE message to an enterprise gateway X, which serves User B. The gateway X, as in step 517, sends a SETUP message to User B. User B answers the call by responding with a CALL PROCESSING message, per step 519. In addition, User B sends a PROGRESS message to the gateway X (step 521). In step 523, the gateway X sends a 183 SESSION PROGRESS message to the NS1; this message is forwarded by the NS1 to User A (step 525). Thereafter, a one way speech path is established. The SIP phone (i.e., User A) plays the early media from the Gateway X as soon as the 183 Session Progress response is received. Additionally, User A does not generate a local ring tone.

In step 527, User B transmits a CONNECT message to the gateway X, causing the gateway X to send a 200 OK message to the NS1 (step 529); the 200 OK message is then forwarded to User A, per step 531. The gateway X also acknowledges the CONNECT message by issuing a CONNECT ACK message, as in step 533.

In step 535, User A sends an ACK message to the NS1. In step 537, the ACK message is forwarded by the NS1 to the gateway X. At this point, a two-way speech path is established.

To terminate the call, User B submits a DISCONNECT message to the gateway X, per step 539. In step 541, the gateway X transmits a BYE message to the NS1, which relays the BYE message to User A (step 543). In step 545, the gateway X sends a RELEASE message to User B in response to the DISCONNECT message. In step 547, User B responds with a RELEASE COMPLETE message. Upon receipt of the BYE message from the NS1, User A transmits a 200 OK message, as in step 549, to the NS1. The NS1 then forwards the 200 OK to the gateway X. In this manner, User B disconnects the call.

FIG. 6 is a flowchart of a process for providing a Find-Me service, according to an embodiment of the present invention. In this example, the station associated with User A is denoted “User A”; however, because User B may be associated with any number of devices (or clients) under the Find-Me feature, these devices are referred to as “Terminator 1”, “Terminator 2”, and “Terminator 3.” It is noted that, in general, any number of terminators (i.e., destination clients) may be specified in the Find-Me list of User B. Under this scenario, it is assumed that User B is reachable via Terminator 3. User A can be a SIP phone or enterprise gateway, while Terminators 1, 2, and 3 can be a SIP phone, enterprise gateway, or a network gateway 107. User B has a Find Me Service. NS1 proxies the INVITE first to Terminator 1, then Terminator 2, then Terminator 3, where the call completes. For the purposes of explanation, in this example, Users B, C, and D are assumed to be SIP phones.

First, according to the Find-Me list, User A calls Terminator 1 by sending an INVITE message to the NS1, as in step 601. The NS1 responds, as in step 603, with a 407 AUTHORIZATION REQUIRED message. User A acknowledges, per step 605, and sends a subsequent INVITE message to the NS1. In step 609, the INVITE message is transmitted to the RS 115 by the NS1, which also sends a 100 TRYING message to User A (step 611). The RS 115 sends a 300 MULTIPLE CHOICES message, as in step 613, to the NS1. In step 615, the NS1 transmits an INVITE message to Terminator 1, which returns a 404 NOT FOUND message (step 617). In step 619, the NS1 sends an ACK message to Terminator 1.

In step 621, NS1 now sends an INVITE message to Terminator 2, which replies with a 180 RINGING message (step 623). The 180 RINGING message is then forwarded by the NS1 to User A, per step 625. In step 627, the NS1 issues a CANCEL message to Terminator 2 and sends an INVITE message to Terminator 3 (step 629). Terminator 2, as in step 631, replies with a 200 OK message to the NS1. Optionally, Terminator 2 sends a 487 REQUEST CANCELLED message (step 633); NS1 acknowledges Terminator 2, per step 635. The 487 Request Cancelled response and ACK between Terminator 2 and the NS 113 1 are optional, in that if Terminator 2 is compliant to IETF RFC 2543, then the 487 and ACK are not present. If Terminator 2 is compliant to IETF RFC 2543bis, then the messages are present.

Terminator 3, as in step 637, sends a 180 RINGING message to NS1, which forwards the message to User A. Additionally, Terminator 3 sends a 200 OK message to User A via the NS1 (steps 641 and 643). User A, next, acknowledges with an ACK message, as in steps 645 and 647.

The above flow is explained with User A as a SIP phone. If User A is an enterprise gateway, there would be no authentication challenge (407, ACK, then reINVITE). Also, Users C and D assumed to be SIP phones; if Terminator 2 or Terminator 3 is a enterprise gateway or network gateway 107, then the 180 RINGING message would instead be a 183 SESSION PROGRESS message.

FIG. 7 is a diagram a SIP server having recursive query capability, according to an embodiment of the present invention. According to an embodiment of the present invention, a server 701 (e.g., a SIP server) includes two logical components: a location server 703 (e.g., RS 115 of FIG. 1) and a proxy server 705 (e.g., NS 113). The location server 703 determines the possible destinations (location terminations) for a call, handing off the addresses to the proxy server 705. The proxy server 705 then attempts to complete the call initiated by a calling station 707 by trying the possible destinations (e.g., terminals, clients, etc.), for example, Contact 1 through Contact N, serially or in parallel.

The SIP server 701 supports call features, which may be invoked at the location server 703. These features, in an exemplary embodiment, may include Centrex-type features, such as Call Forwarding Unconditional, Call Forwarding Conditional, Call screening and Call Blocking. These features also include advanced features, such as Find-Me and Default Call Routing.

In the conventional approach, efficiency and correctness is problematic when a chain of features is invoked. Inefficiencies and errors stem from the complexity of the call routing attended with the chain of features; this complexity is shown, in part, in FIG. 10. For instance, it is assumed that a user has the Find-Me feature, in which the user has specified a serial list of six possible contacts. Additionally, each of these six possible contacts also has accounts in the location server; further, these contacts each subscribes to the Find-Me feature and specifies six other possible contacts. In such situations, there can be large inefficiency if the location server tries to calculate all the possible destinations at once. Furthermore, providing correct call routing poses a challenge when dealing with multiple types of addresses—e.g., private phone numbers in different private domains, public phone numbers, and alphanumeric IP addresses (where there is a need to carry context information along with all the possible call routing possibilities). If context information is not handled properly when call features are invoked, the calls cannot be completed properly. If the location server spends a lot of time computing possible routes that are not used, this is inefficient and impairs call setup time.

By contrast, the SIP server 701 advantageously optimizes call setup time, and is able to handle a complex set of feature interactions. The SIP server 701 determines possible destination addresses as needed in an iterative manner. Initially, a first set of addresses is sent from the location server 703 to the proxy server 705. The message interface between these devices is extended to handle context information (as shown in FIG. 17) that may be needed if a re-query comes back to the location server.

FIG. 8 is a diagram of an exemplary message format containing context information used by the SIP server of FIG. 7. A SIP message 801 that is exchanged between the location server 703 and the proxy server 705 includes a Context Information field 803 to specify context information (such as call completion status), and an Address Set field 805 to indicate the set of addresses that the proxy server should attempt to contact to reach the called party. The Context Information field 803 includes a FINAL FLAG field 807 for specifying whether the routing information as indicated by the Address Set field 805 is final or non-final. A final address set does not refer other destination addresses for locating the calling party.

Turning now to the example of FIG. 7, depending on the nature of the addresses received at the proxy server, and call completion status, a subsequent query for one of more of those contacts is sent back to the location server 703, which generates a further set of addresses back to the proxy server 705. The call processing on the location server 703 is modified to receive back context information, and enter call routing logic at the appropriate point. This process is more fully described below with respect to FIG. 9.

FIG. 9 is a flowchart of a process for performing recursive querying to establish a call, according to an embodiment of the present invention. In step 901, a calling party using a station 707 sends a request to the SIP server 701 to establish a call with a called party. As mentioned, depending on the call features invoked, the called party may need to be located among multiple locations (i.e., stations). As used herein, the term “called station” refers to the station that the called party is located, such that a successful call establishment is achieved. Based on this terminology, the Contact N of FIG. 7 may be considered the called station, while the other Contacts 1 through (N−1) are simply intermediate stations.

In step 903, the location server 703 generates an initial set of addresses based on the request from the calling station 707. The location server 703, as in step 905, sends a SIP message that specifies the set of addresses along with context information to the proxy server 705. Next, the proxy server 705 attempts to reach the called party based on the initial set of addresses, per step 907. In this example, the first set of addresses may correspond to Contacts 1-(N−1). In step 909, the proxy server 909 determines whether the called party has been reached. Assuming the called party is associated with Contact N, the proxy server 705 thus determines that another query needs to be issued, as the called party has not been reached. In this case, the location server 703, upon receipt of a “re-query”, generates another set of addresses, as in step 911, for the proxy server 705 to try. Accordingly, steps 905 and 907 are performed again. With this new set of addresses, Contact N is included; thus, a call can be established, per step 913.

By dividing the routing computations through the submission of partial address sets, the location server 703 minimizes its processing time, resulting in a relatively fast call establishment. Further, the location server 703 may support sophisticated call features, which require complex routing decisions, as shown, for example, in FIG. 10.

FIG. 10 is a diagram of the relationship of multiple Find-Me lists. In this example, User A attempts to call User B, which subscribes to the Find-Me/Follow-Me feature. The user profile of User B (i.e., the called party) yields a list of possible destinations, A1-A6. In turn, the destination A2 has a Find-Me list that has other possible destinations, B1-B4. As stated above, this chaining of the Find-Me lists introduces complexity into the call establishment process. According to an embodiment of the present invention, the call establishment process employs a recursive querying mechanism, which is further explained below in FIG. 11.

FIG. 11 is a diagram showing the interaction of the proxy server and the location server in performing recursive querying, in accordance with an embodiment of the present invention. In step 1, User A via an originating station (or originator) 1101 sends a request to a proxy server (i.e., network server (NS)) 1103 for establishing a call with User B. For explanatory purposes, the proxy server 1103 is shown as two logical components 1103 a, 1103 b to better illustrate the recursive querying mechanism of an embodiment of the present invention. The proxy server 1103 a forwards the request to a location server 1105 to obtain routing instructions (step 2). Although only a single location server 1105 is shown, it is recognized that multiple location servers may be employed. Per step 3, the location server 1105 returns non-final routing instructions to the proxy server 1103 a; the instructions specify multiple possible contact addresses (for example, in the case of the Find-Me feature). The non-finality of the routing instructions is indicated by setting the FINAL FLAG in the context information field of the SIP message (FIG. 8) to, for example, “0”. Next, in step 4, the proxy server 1103 a forwards one particular non-final address in the Find-Me list (e.g., A2 of the list 1001 of FIG. 10) to another “instance” of itself, proxy server 1103 b.

The proxy server 1103 b, as in step 5, then forwards a non-final request for one contact to the location server 1105. The location server 1105, per step 6, returns a final routing request for a route through, for example, a terminating station 1107 among multiple possible terminating stations 1107, 1109, 1111, 1113. In this example, it is assumed that the terminating station 1107 is a gateway. Per steps 7 and 8, the proxy server 1103 b thus sends the request to the terminating station 1107, which responds with a 183 message. The 183 response is proxied back to the proxy server 1103 a, per step 9. In step 10, the proxy server 1103 a, having knowledge that the Find-Me feature has been invoked, converts 1xx messages to 180 (Ringing) messages. Thus, the proxy server 1103 a effectively suppresses the 183 messages, thereby preventing the originator 1101 from processing the early media; the proxy server 1103 a may optionally remove the SDP media portion of the message.

FIG. 12 illustrates a computer system 1200 upon which an embodiment according to the present invention can be implemented. The computer system 1200 includes a bus 1201 or other communication mechanism for communicating information, and a processor 1203 coupled to the bus 1201 for processing information. The computer system 1200 also includes main memory 1205, such as a random access memory (RAM) or other dynamic storage device, coupled to the bus 1201 for storing information and instructions to be executed by the processor 1203. Main memory 1205 can also be used for storing temporary variables or other intermediate information during execution of instructions to be executed by the processor 1203. The computer system 1200 further includes a read only memory (ROM) 1207 or other static storage device coupled to the bus 1201 for storing static information and instructions for the processor 1203. A storage device 1209, such as a magnetic disk or optical disk, is additionally coupled to the bus 1201 for storing information and instructions.

The computer system 1200 may be coupled via the bus 1201 to a display 1211, such as a cathode ray tube (CRT), liquid crystal display, active matrix display, or plasma display, for displaying information to a computer user. An input device 1213, such as a keyboard including alphanumeric and other keys, is coupled to the bus 1201 for communicating information and command selections to the processor 1203. Another type of user input device is cursor control 1215, such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to the processor 1203 and for controlling cursor movement on the display 1211.

According to one embodiment of the invention, the SIP server functionalities (particularly recursive query capability as described in FIG. 9) are provided by the computer system 1200 in response to the processor 1203 executing an arrangement of instructions contained in main memory 1205. Such instructions can be read into main memory 1205 from another computer-readable medium, such as the storage device 1209. Execution of the arrangement of instructions contained in main memory 1205 causes the processor 1203 to perform the process steps described herein. One or more processors in a multi-processing arrangement may also be employed to execute the instructions contained in main memory 1205. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement the embodiment of the present invention. Thus, embodiments of the present invention are not limited to any specific combination of hardware circuitry and software.

The computer system 1200 also includes a communication interface 1217 coupled to bus 1201. The communication interface 1217 provides a two-way data communication coupling to a network link 1219 connected to a local network 1221. For example, the communication interface 1217 may be a digital subscriber line (DSL) card or modem, an integrated services digital network (ISDN) card, a cable modem, or a telephone modem to provide a data communication connection to a corresponding type of telephone line. As another example, communication interface 1217 may be a local area network (LAN) card (e.g. for Ethernet™ or an Asynchronous Transfer Model (ATM) network) to provide a data communication connection to a compatible LAN. Wireless links can also be implemented. In any such implementation, communication interface 1217 sends and receives electrical, electromagnetic, or optical signals that carry digital data streams representing various types of information. Further, the communication interface 1217 can include peripheral interface devices, such as a Universal Serial Bus (USB) interface, a PCMCIA (Personal Computer Memory Card International Association) interface, etc. Although only a single communication interface 1217 is shown, it is recognized that multiple communication interfaces may be employed to communicate with different networks and devices.

The network link 1219 typically provides data communication through one or more networks to other data devices. For example, the network link 1219 may provide a connection through local network 1221 to a host computer 1223, which has connectivity to a network 1225 (e.g. a wide area network (WAN) or the global packet data communication network now commonly referred to as the “Internet 127”) or to data equipment operated by service provider. The local network 1221 and network 1225 both use electrical, electromagnetic, or optical signals to convey information and instructions. The signals through the various networks and the signals on network link 1219 and through communication interface 1217, which communicate digital data with computer system 1200, are exemplary forms of carrier waves bearing the information and instructions.

The computer system 1200 can send messages and receive data, including program code, through the networks, network link 1219, and communication interface 1217. In the Internet 127 example, a server (not shown) might transmit requested code belonging an application program for implementing an embodiment of the present invention through the network 1225, local network 1221 and communication interface 1217. The processor 1204 may execute the transmitted code while being received and/or store the code in storage device 129, or other non-volatile storage for later execution. In this manner, computer system 1200 may obtain application code in the form of a carrier wave.

The term “computer-readable medium” as used herein refers to any medium that participates in providing instructions to the processor 1204 for execution. Such a medium may take many forms, including but not limited to non-volatile media, volatile media, and transmission media. Non-volatile media include, for example, optical or magnetic disks, such as storage device 1209. Volatile media include dynamic memory, such as main memory 1205. Transmission media include coaxial cables, copper wire and fiber optics, including the wires that comprise bus 1201. Transmission media can also take the form of acoustic, optical, or electromagnetic waves, such as those generated during radio frequency (RF) and infrared (IR) data communications. Common forms of computer-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, any other magnetic medium, a CD-ROM, CDRW, DVD, any other optical medium, punch cards, paper tape, optical mark sheets, any other physical medium with patterns of holes or other optically recognizable indicia, a RAM, a PROM, and EPROM, a FLASH-EPROM, any other memory chip or cartridge, a carrier wave, or any other medium from which a computer can read.

Various forms of computer-readable media may be involved in providing instructions to a processor for execution. For example, the instructions for carrying out at least part of the present invention may initially be borne on a magnetic disk of a remote computer. In such a scenario, the remote computer loads the instructions into main memory and sends the instructions over a telephone line using a modem. A modem of a local computer system receives the data on the telephone line and uses an infrared transmitter to convert the data to an infrared signal and transmit the infrared signal to a portable computing device, such as a personal digital assistance (PDA) and a laptop. An infrared detector on the portable computing device receives the information and instructions borne by the infrared signal and places the data on a bus. The bus conveys the data to main memory, from which a processor retrieves and executes the instructions. The instructions received by main memory may optionally be stored on storage device either before or after execution by processor.

Accordingly, the present invention provides an integrated communication system supporting telephony and data services over a data network. In particular, the system utilizes, in an exemplary embodiment, a Session Initiation Protocol (SIP) server that is logically partitioned into a location server and a proxy server. The location server generates a message specifying a set of addresses relating to the called party, along with context information. The proxy server attempts to establish the call, either serially or in parallel, based on the set of addresses, and, as necessary, iteratively queries the location server to obtain another set of addresses if no prior address results in establishment of the call. Under the above arrangement, call features, such as Call Forwarding Unconditional, Call Forwarding Conditional, Call Screening, Call Blocking, and Find-Me, are efficiently and accurately performed over a data network. The present invention advantageously provides efficient and accurate call processing over a data network, while preserving traditional call features.

While the present invention has been described in connection with a number of embodiments and implementations, the present invention is not so limited but covers various obvious modifications and equivalent arrangements, which fall within the purview of the appended claims.

REFERENCES

-   [1] Handley, et al., “SIP: Session Initiation Protocol”, IETF RFC     2543, 1999. -   [2] Handley, et al., “RFC 2543bis”, IETF Internet-Draft, Work in     Progress. -   [3] Sparks, R., “SIP Call Control: REFER”, IETF Internet-Draft, Work     in Progress. -   [4] Johnston, et al., “SIP Telephony Call Flow Examples”, IETF     Internet-Draft, Work in Progress. -   [8] Johnston, et al., “SIP Service Examples”, IETF Internet     127-Draft, Work in Progress. 

1. A communication system for establishing a call over a data network, the system comprising: a first server module configured to receive a request from a calling station to establish a call with a station associated with a called party, the first server module generating a message specifying a set of addresses relating to the called party and context information; and a second server module communicating with the first server module and configured to receive the message and to attempt to establish the call based on the set of addresses, wherein the second server module iteratively queries the first server module to obtain another set of addresses if no prior address results in establishment of the call. 